﻿//#define _CRT_SECURE_NO_WARNINGS 
//#include<iostream>
//using namespace std;
//
//#define PI 3.14
//
//class container { // 声明抽象类 container
//protected:
//	double radius;
//public:
//    container(double radius1):radius(radius1) {}; // 抽象类 container 的//构造函数
//	
//    virtual double surface_area() = 0; // 纯虚函数surface_area
//    virtual double volume() = 0; // 纯虚函数 volume
//};
//
//
//class cube : public container
//{
//public:
//    cube(double side) : container(side) {}
//
//    double surface_area() 
//    {
//        return 6 * radius * radius; // 正方体表面积公式：6a² 
//    }
//
//    double volume() 
//    {
//        return radius * radius * radius; // 正方体体积公式：a³ 
//    }
//};
//class sphere : public container 
//{
//public:
//    sphere(double r) : container(r) {}
//
//    double surface_area() 
//    {
//        return 4 * PI * radius * radius; // 球体表面积公式：4πr² 
//    }
//
//    double volume() 
//    {
//        return (4.0 / 3.0) * PI * radius * radius * radius; // 球体体积公式：(4/3)πr³ 
//    }
//};
//
//class cylinder : public container 
//{
//private:
//    double height;
//public:
//    cylinder(double r, double h) : container(r), height(h) {}
//
//    double surface_area()
//    {
//        // 圆柱体表面积公式：2πr² + 2πrh 
//        return 2 * PI * radius * radius + 2 * PI * radius * height;
//    }
//
//    double volume() 
//    {
//        // 圆柱体体积公式：πr²h 
//        return PI * radius * radius * height; 
//    }
//};
//
//int main()
//{
//    cube c(6.0);
//    sphere s(5.0);
//    cylinder cy(5.0, 6.0);
//
//    container* pc = &c;
//    container* ps = &s;
//    container* pcy = &cy;
//
//    cout << "立方体"<< endl;
//    cout << "表面积: " << pc->surface_area() << endl;
//    cout << "体积: " << pc->volume() << endl;
//    cout << endl;
//   
//    cout << "球体" << endl;
//    cout << "表面积: " << ps->surface_area() << endl;
//    cout << "体积: " << ps->volume() << endl;
//    cout << endl;
//
//    cout << "圆柱体" << endl;
//    cout << "表面积: " << pcy->surface_area() << endl;
//    cout << "体积: " << pcy->volume() << endl;
//    cout << endl;
//
//	return 0;
//}